const log4js = require('log4js');
const path = require('path');
//  默认设置的 日志级别是 off 就是所有日志都不记录 只有高于等于off 的级别都不输出

// const logger = log4js.getLogger();
// logger.level = 'info'; //日志级别 高于 info 的日志才会输出
// logger.debug('debug111', 'debug'); // 不输出
// logger.info('info111', 'info');

// 日志配置
log4js.configure({
  appenders: {
    // 配置 出口
    sql: {
      // 默认 日志写入控制台
      type: 'dateFile', // 设置写入文件 满了 自动创建日期文件
      // type:'file',
      // 还可以支持 发送邮件 日志等
      filename: path.resolve(__dirname, 'logs', 'sql', 'logging.log'), // 写入的文件名
      maxLogSize: 1024 * 1024, //配置文件的最大字节数 满了 自动按照日期创建文件
      // maxLogSize: 1024,
      keepFileExt: true, // 保持文件 log 后缀
      layout: {
        // 设置 日志 的格式
        type: 'pattern', // 自定义格式
        pattern: '%c [%d{yyyy-MM-dd hh:mm:ss}] [%p]: %m%n',
      },
    },
    default: {
      type: 'stdout',
    },
  },
  categories: {
    // 配置分类
    sql: {
      // 分类 sql日志
      appenders: ['sql'], //该分类使用上面配置的出口sql的配置写入日志 可以有多个出口
      level: 'all', // 日志级别 所有级别都记录
    },
    default: {
      // 默认 分类
      appenders: ['default'],
      level: 'all',
    },
  },
});

process.on('exit', () => {
  // 程序 不管因为什么样原因退出  把日志记录完 因为日志有些是 异步记录的
  log4js.shutdown();
});

const sqlLogger = log4js.getLogger('sql'); // 得到 sql 类别的日志
const defaultLogger = log4js.getLogger();

// setInterval(() => {
//   sqlLogger.debug('debug1');
// }, 10);

exports.sqlLogger = sqlLogger;
exports.logger = defaultLogger;
